/*
 * Copyright 2008-2009 Aying.Net Powered by Fuchun.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.aying.util.image;

import java.io.File;
import java.awt.Dimension;

/**
 * @author Fuchun
 * @version 1.0, 2009-7-1
 */
public class ImageScaleInfo {

    /** 源图片的尺寸。 */
    private Dimension srcDim;

    /** 源图片文件。 */
    private File      srcImage;

    /** 大图片文件。 */
    private File      bigImage;

    /** 中型图片文件。 */
    private File      mediumImage;

    /** 小型图片文件。 */
    private File      smallImage;

    /** 缩略图片文件。 */
    private File      thumbImage;

    /** 方块图片文件。 */
    private File      squareImage;

    /**
     * 返回源图片文件。
     * 
     * @return 源图片文件。
     */
    public File getSrcImage() {
        return srcImage;
    }

    /**
     * 设置源图片文件。
     * 
     * @param srcFile 要设置的 源图片文件。
     */
    protected void setSrcImage(File srcImage) {
        this.srcImage = srcImage;
    }

    /**
     * 返回大图文件。
     * 
     * @return 大图文件。
     */
    public File getBigImage() {
        return bigImage;
    }

    /**
     * 设置大图文件。
     * 
     * @param bigImage 要设置的 大图文件。
     */
    protected void setBigImage(File bigImage) {
        this.bigImage = bigImage;
    }

    /**
     * 返回中型图片文件。
     * 
     * @return 中型图片文件。
     */
    public File getMediumImage() {
        return mediumImage;
    }

    /**
     * 设置中型图片文件。
     * 
     * @param mediumImage 要设置的 中型图片文件。
     */
    protected void setMediumImage(File mediumImage) {
        this.mediumImage = mediumImage;
    }

    /**
     * 返回小型图片文件。
     * 
     * @return 小型图片文件。
     */
    public File getSmallImage() {
        return smallImage;
    }

    /**
     * 设置小型图片文件。
     * 
     * @param smallImage 要设置的 小型图片文件。
     */
    protected void setSmallImage(File smallImage) {
        this.smallImage = smallImage;
    }

    /**
     * 返回缩略图片文件。
     * 
     * @return 缩略图片文件。
     */
    public File getThumbImage() {
        return thumbImage;
    }

    /**
     * 设置缩略图片文件。
     * 
     * @param thumbImage 要设置的 缩略图片文件。
     */
    protected void setThumbImage(File thumbImage) {
        this.thumbImage = thumbImage;
    }

    /**
     * 返回方块图片文件。
     * 
     * @return 方块图片文件。
     */
    public File getSquareImage() {
        return squareImage;
    }

    /**
     * 设置方块图片文件。
     * 
     * @param squareImage 要设置的 方块图片文件。
     */
    protected void setSquareImage(File squareImage) {
        this.squareImage = squareImage;
    }

    /**
     * 返回源图片的尺寸。
     * 
     * @return 源图片的尺寸。
     */
    public Dimension getSrcDim() {
        return srcDim;
    }

    /**
     * 设置源图片的尺寸。
     * 
     * @param srcDim 要设置的 源图片的尺寸。
     */
    protected void setSrcDim(Dimension srcDim) {
        this.srcDim = srcDim;
    }

    // public static void imageZoomOut(File srcImage, String targetImagePath,
    // int width, int height, int quality)
    // throws IOException {
    // if (!srcImage.exists()) {
    // throw new FileNotFoundException("要进行缩放处理的图片不存在！");
    // }
    // int srcWidth = 0, srcHeight = 0;
    // ImageInfo imgInfo = null;
    // MagickImage magickImage = null;
    // Dimension dim = null;
    // try {
    // imgInfo = new ImageInfo(srcImage.getAbsolutePath());
    // imgInfo.setQuality(quality);
    // magickImage = new MagickImage(imgInfo);
    // dim = zoom(magickImage.getDimension(), width, height);
    // MagickImage scale = magickImage.scaleImage((int)dim.getWidth(),
    // (int)dim.getHeight());
    // scale.setFileName(targetImagePath);
    // scale.writeImage(imgInfo);
    // } catch (Exception ex) {
    // throw new IOException(ex);
    // }
    //        
    // }
    //    
    // private static Dimension zoom(Dimension srcDim, int width, int height) {
    // int srcWidth = new Double(srcDim.getWidth()).intValue();
    // int srcHeight = new Double(srcDim.getHeight()).intValue();
    // if(srcWidth >= width && srcHeight >= height) {
    // srcWidth = srcWidth * height / srcHeight;
    // return new Dimension(srcWidth, height);
    // }
    // // 以高来缩放
    // if(srcWidth <= width && srcHeight > height) {
    // srcWidth = srcWidth * height / srcHeight;
    // return new Dimension(srcWidth, height);
    // } else {
    // srcHeight = srcHeight * width / srcWidth;
    // return new Dimension(width, srcHeight);
    // }
    // }

}
